Wireless mesh networks are an example of an ad hoc network in which each device can relay data on behalf of other devices in the network. A pair of devices in a mesh network might not be able to communicate directly with one another. Instead, communications between the pair of devices can be supported by one or more other devices in the mesh network which act to relay data from one device of the pair to the other. In such mesh networks, a connection between a given pair of devices can be intermittent and short-lived due to intermediate devices supporting the connection moving in and out of the signal range of adjacent devices, interference, and those intermediate devices entering low power states.
These issues are compounded when the device wishing to communicate over the wireless mesh network is itself subject to power restrictions. Such devices, which can include ultra-low power devices intended to run for many years on a single battery, may themselves spend a significant proportion of time in a low power state in which communication is not possible or in which the device is configured to respond only to certain network packets (e.g. those for which it is the endpoint). Low power devices may only achieve sporadic connectivity to resources in the network, which can make it difficult for those devices to perform functions that are typically enabled by network connectivity, such as downloading software updates and performing data backups to a remote location.
Enabling devices to update their software can allow the function set of a device to be changed without requiring that the physical device is replaced. For example, a software update can provide new functionalities and bug fixes to a device. This can be advantageous even for the most low-power devices.
Devices in mesh networks often present difficulties to the usual approaches for performing software updates. For example, nodes in mesh networks can suffer from unreliable connections and are limited by the small size of data packets typically transported over the network. These difficulties generally include the problems discussed above for low power devices suffering from intermittent connectivity to a mesh network. Software updates can be a particular problem when the mesh network represents an “Internet of Things” because devices on such mesh networks can be inaccessible to a user (such as a light controller embedded in a wall) and may often not present any kind of interface accessible to the user (preventing actions such as a physical reset).
There is a need for a robust update mechanism for devices operating in mesh networks which allows very low power devices with potentially intermittent access to the network to be reliably updated.